import random

from faker import Faker
from utils.func_util import random_name, age

fake = Faker(locale='zh_CN')


def func_yaml(data):
    # 检查传入的data是否为字典类型
    if isinstance(data, dict):
        # 遍历字典中的每个键值对
        for key, value in data.items():
            # 检查值中是否包含特定的模式（即${...}）
            if '${' in str(value) and '}' in str(value):
                # 找到模式的开始和结束位置
                start = str(value).index('${')
                end = str(value).index('}')
                # 提取函数名称
                func_name = str(value)[start + 2:end]
                # 使用eval函数执行提取的函数名对应的函数，并将结果替换回原来的值中
                data[key] = str(value)[0:start] + str(eval(str(func_name))) + str(value)[end + 1:len(str(value))]
    # 返回修改后的字典
    return data


if __name__ == '__main__':
    data = {'name': '上海-${random_name()}-测试', 'age': '${age()}', 'sex': '男'}
    print(func_yaml(data))
